package com.azxcrm.project.monitor.workflow.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.azxcrm.common.utils.StringUtils;
import com.azxcrm.project.monitor.workflow.dao.WorkFlowDao;
import com.azxcrm.project.monitor.workflow.domain.WorkFlow;

/**
 * 工作流 服务层实现
 * 
 * @author Dustyone
 * @date 2018-08-07
 */
@Service
public class WorkFlowServiceImpl implements WorkFlowService 
{
	@Autowired
	private WorkFlowDao workFlowDao;
	
	/**
     * 查询工作流信息
     * 
     * @param id 工作流ID
     * @return 工作流信息
     */
	 @Override
	public WorkFlow selectWorkFlowById(Integer id)
	{
	    return workFlowDao.selectWorkFlowById(id);
	}
	
	/**
     * 查询工作流列表
     * 
     * @param workFlow 工作流信息
     * @return 工作流集合
     */
	 @Override
	public List<WorkFlow> selectWorkFlowList(WorkFlow workFlow)
	{
	    return workFlowDao.selectWorkFlowList(workFlow);
	}
	 
	/**
     * 查询工作流状态列表
     * 
     * @param workFlow 工作流信息
     * @return 工作流集合
     */
	 @Override
	public List<WorkFlow> selectWorkFlowStatesList(WorkFlow workFlow)
	{
	    return workFlowDao.selectWorkFlowStatesList(workFlow);
	}
	
    /**
     * 新增工作流
     * 
     * @param workFlow 工作流信息
     * @return 结果
     */
	 @Override
	public int insertWorkFlow(WorkFlow workFlow)
	{
	    return workFlowDao.insertWorkFlow(workFlow);
	}
	
	/**
     * 修改工作流
     * 
     * @param workFlow 工作流信息
     * @return 结果
     */
	 @Override
	public int updateWorkFlow(WorkFlow workFlow)
	{
	    return workFlowDao.updateWorkFlow(workFlow);
	}
	
	/**
     * 保存工作流
     * 
     * @param workFlow 工作流信息
     * @return 结果
     */
	 @Override
	public int saveWorkFlow(WorkFlow workFlow)
	{
	    Integer id = workFlow.getFlowId();
		int rows = 0;
		if (StringUtils.isNotNull(id))
        {
		    rows = workFlowDao.updateWorkFlow(workFlow);
		}
		else
        {
		    rows = workFlowDao.insertWorkFlow(workFlow);
		}
		return rows;
	}
	
	/**
     * 删除工作流信息
     * 
     * @param id 工作流ID
     * @return 结果
     */
	 @Override
	public int deleteWorkFlowById(Integer FlowId)
	{
	    return workFlowDao.deleteWorkFlowById(FlowId);
	}
	
	/**
     * 批量删除工作流对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
	 @Override
	public int batchDeleteWorkFlow(Integer[] ids)
	{
		return workFlowDao.batchDeleteWorkFlow(ids);
	}
	 
	 
	/**
	 * 根据flowCode查询工作流信息
	 * @param flowCode 
     * @return 结果 
	 */
	@Override
	public WorkFlow selectWorkFlowByCode(String flowCode) 
	{
		return workFlowDao.selectWorkFlowByCode(flowCode);
	}
	
	/**
	 * 查询该工作流是否已被应用
	 * 
	 * @param flowId  流程ID
	 * @return 结果 true 存在 false 不存在
	 */
	@Override
	public boolean checkFlowIsApplyed(int flowId) {
		int result = workFlowDao.checkFlowIsApplyed(flowId);
		return result > 0 ? true : false;
	}

}
